#!/bin/env python3
import ithildin as ith
import numpy as np
import matplotlib.pyplot as plt
import sys
from typing import List
from scipy.interpolate import RectBivariateSpline
from pydiffmap.diffusion_map import DiffusionMap
from pydiffmap import visualization as diff_visualization
import matplotlib

data_BOCF = ith.SimData.from_stem("../KORRR/results_9010/PDL_9010")

# Variabelen
var1 = data_BOCF.vars['u'].ravel()
var2 = data_BOCF.vars['v'].ravel()
var3 = data_BOCF.vars['w'].ravel()
var4 = data_BOCF.vars['s'].ravel()

# Verlaag aantal punten om geheugengebruik en tijdsduur te beperken.
# replace=True strikt genomen incorrect maar verlaagt geheugengebruik
# en wegens de hoge hoeveelheid punten weinig belangrijk
keuzes = np.random.choice(var1.shape[0], 10000,replace=True)

var1 = var1[keuzes]
var2 = var2[keuzes]
var3 = var3[keuzes]
var4 = var4[keuzes]

#matplotlib.use("TkAgg")
#fig = plt.figure()
#ax = fig.add_subplot(projection='3d')
#ax.scatter(var1, var2, var3, c=var4,cmap=plt.hot())
#plt.show()

# Haal twee groepjes uitschieters weg (die zullen afzonderlijk gebestudeerd
# worden).
keuzes = np.where(var3 < 0.9999999)
var1 = var1[keuzes]
var2 = var2[keuzes]
var3 = var3[keuzes]
var4 = var4[keuzes]


# laatste 50, eerste 50 (tijdsranden), xyz randen weggooien voldoende
#  (((---> rare dingen weg, wave links rechts wegsnijden voor beter)

# TODO: 0. voor AP model (phase_1000), voor nog minder punten


# TODO: 1. afsnijden
#       2. random (?)
# Picasso?
# Overleaf -- nadenken, delen

matplotlib.use("TkAgg")
fig = plt.figure()
ax = fig.add_subplot(projection='3d')
ax.scatter(var1, var2, var3, c=var4,cmap=plt.hot())
plt.show()

# Nu de uitschieters verwijderd zijn, kunnen we proberen diffusion maps te
# gebruiken.

#del keuzes
#faseruimte = np.array([var1, var2, var3, var4]).transpose()
#del var1, var2, var3, var4 # geheugengebruik beperken

#dmap = DiffusionMap.from_sklearn(n_evecs = 4)
#map.fit(faseruimte)
